package com.smart.community.user.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.smart.community.user.entity.UserUploadFile;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户上传文件Mapper接口
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 * @version 1.0.0
 */
@Mapper
public interface UserUploadFileMapper extends BaseMapper<UserUploadFile> {

    /**
     * 根据用户ID查询文件列表
     * 
     * @param userId 用户ID
     * @return 文件列表
     */
    List<UserUploadFile> selectByUserId(@Param("userId") Long userId);

    /**
     * 根据用户ID和上传类型查询文件列表
     * 
     * @param userId 用户ID
     * @param uploadType 上传类型
     * @return 文件列表
     */
    List<UserUploadFile> selectByUserIdAndType(@Param("userId") Long userId, @Param("uploadType") String uploadType);

    /**
     * 根据MD5哈希值查询文件
     * 
     * @param md5Hash MD5哈希值
     * @return 文件信息
     */
    UserUploadFile selectByMd5Hash(@Param("md5Hash") String md5Hash);

    /**
     * 根据文件URL查询文件
     * 
     * @param fileUrl 文件URL
     * @return 文件信息
     */
    UserUploadFile selectByFileUrl(@Param("fileUrl") String fileUrl);

    /**
     * 更新文件下载次数
     * 
     * @param id 文件ID
     * @return 更新结果
     */
    int updateDownloadCount(@Param("id") Long id);

    /**
     * 更新文件查看次数
     * 
     * @param id 文件ID
     * @return 更新结果
     */
    int updateViewCount(@Param("id") Long id);

    /**
     * 根据过期时间查询过期文件
     * 
     * @param expireTime 过期时间
     * @return 过期文件列表
     */
    List<UserUploadFile> selectExpiredFiles(@Param("expireTime") String expireTime);


} 